package ebj.common.document_create.pdf.demo;
import java.io.ByteArrayInputStream;  
import java.io.FileOutputStream;  
import java.io.InputStream;  
import java.io.OutputStream;  
import com.itextpdf.text.Document;  
import com.itextpdf.text.pdf.PdfWriter;  
import com.itextpdf.tool.xml.XMLWorkerHelper;  
   
/** 
 * html转pdf 

结果还不错，虽然可以满足我们的要求，但是比较复杂，动态创建一个个的表格和内容过于繁琐，方法太粗暴了，用户的文档内容或格式变化，就要修改程序了。

于是，我们讨论了一个比较好的方法，感谢谢国庆提供的帮助。

先创建html，然后转换成pdf
 * @author zhangwd 
 * @version 1.0 
 * 
 */  
public class PdfDemo_4 {  
   
    public static void create() throws Exception {  
   
        // html中字体非常郁闷  
        // 1. html中不指定字体，则默认使用英文字体，中文会不显示。  
        // 2. html中指定的字体必须是英文名称，如宋体：font-family:SimSun;  
        // 3. html中不能指定自定义字体，必须指定itext支持的字体，还好itext支持字体比较多，常见操作系统带的都支持  
        // 4. 暂没有找到如何html中支持自定义字体方法，网上都是修改源码实现默认字体中文，也很重要  
   
        StringBuilder html = new StringBuilder();  
        html.append("<html>");  
        html.append("<body style='font-size:20px;font-family:SimSun;'>");  
        html.append("<table width='19cm'border='1' cellpadding='0' cellspacing='0'>");  
        html.append("<tr>");  
        html.append("<td colspan='2'>凉州词</td>");  
        html.append("</tr>");  
        html.append("<tr>");  
        html.append("<td>黄河远上白云间，一片孤城万仞山。</td>");  
        html.append("<td>羌笛何须怨杨柳，春风不度玉门关。</td>");  
        html.append("</tr>");  
        html.append("</table>");  
        html.append("</body>");  
        html.append("</html>");  
   
        InputStream is = new ByteArrayInputStream(html.toString().getBytes());  
   
        OutputStream os = new FileOutputStream("D:/tmp/documents/demo.4.pdf");  
        Document document = new Document();  
   
        PdfWriter writer = PdfWriter.getInstance(document,os);  
   
        document.open();  
   
        // 将html转pdf  
        XMLWorkerHelper.getInstance().parseXHtml(writer,document, is);  
   
        document.close();  
    }  
   
    public static void main(String[]args) throws Exception {  
        create();  
    }  
}